package com.project.controller;

import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.ProviderBean;
import com.project.service.IProviderService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 供应商控制器
 */
@RestController
@RequiresPermissions("provider:am")
@RequestMapping("provider")
public class ProviderController {
    @Autowired
    private IProviderService providerService;
    @RequestMapping("cutByItem")
    public IPage<ProviderBean> cutByItem(Integer pageNO, String providerName, String manageRange){
        return providerService.cutByItem(pageNO, providerName, manageRange);
    }

    /**
     * 根据id查询供应商信息
     * @param providerId 供应商id
     * @return 供应商对象
     */
    @RequestMapping("findByproviderId")
    public ProviderBean findByproviderId(Integer providerId){
        return providerService.findByproviderId(providerId);
    }

    /**
     * 根据供应商id修改供应商负责人名字和电话号码
     * @param providerId 供应商id
     * @param name 供应商负责人名字
     * @param phone 电话号码
     */
    @RequestMapping("updateNamePhoneById")
    public String updateNamePhoneById(Integer providerId,String name,String phone){
        providerService.updateNamePhoneById(providerId, name, phone);
        return "ok";
    }

    /**
     * 添加供应商，如果供应商已存在，则不允许添加
     * @param provider  供应商
     */
    @RequestMapping("addProvider")
    public String addProvider(ProviderBean provider){
        providerService.addProvider(provider);
        return "ok";
    }

    /**
     * 批量添加供应商
     * 先将上传excel文件，转化为供应商集合，再将供应商集合里面的对象添加到数据库中，如果供应商已存在，则不做添加
     * @param excelFile 文件
     */
    @RequestMapping("addProviderList")
    public String addProviderList(MultipartFile excelFile) throws Exception {
        if (excelFile.isEmpty()==false){
            //设置初始化信息
            ImportParams params=new ImportParams();
            //设置选项卡
            params.setSheetNum(1);
            //设置标题栏占用的行数
            params.setTitleRows(1);
            //设置表头占用的行数
           params.setHeadRows(1);
            //读取上传文件信息，封装为实体对象集合
            //第一个参数为上传文件的二进制流，第二个参数为封装实体类的类模板，第三个参数为初始化信息
            List<ProviderBean> list= ExcelImportUtil.importExcel(excelFile.getInputStream(),ProviderBean.class,params);
            providerService.addProviderList(list);
            return "ok";
        }
        return "no";
    }

    /**
     * 查询所有的供应商
     * @return 供应商集合
     */
    @RequestMapping("findAllProvider")
    public List<ProviderBean> findAllProvider(){
        return providerService.findAllProvider();
    }
}
